@ECHO OFF setlocal REM Attach a USB flash device to a specified VM on XenServer 4.x REM ------------- EDIT THE OPTIONS BELOW TO SUIT YOUR ENVIRONMENT ------------- REM XenServer Credentials SET XE_USERNAME=root SET XE_PASSWORD=e@sternv0! SET XE_SERVER=192.168.2.9 REM Removable Storage Repository UUID SET REMOVABLE_SR_UUID=CHANGEME REM UUID of the VM you wish to attach the USB storage to SET VM_UUID=d9bc66e6-a321-8bf5-e1d0-6d80d7c6ede1 REM Device name/order on the VM (e.g. hdb, hdc, hdd...) set DEVICE_NAME=hdc REM --------------------------------------------------------------------------- REM XenCenter Path SET XE_CENTER_PATH=C:\program files\citrix\XenCenter\ REM XE Binary and Baseline Parameters SET XE_EXEC="%XE_CENTER_PATH%\xe.exe" -s %XE_SERVER% -u %XE_USERNAME% -pw %XE_PASSWORD% REM Temporary working file SET TEMP_FILE=%TEMP%/xs-usbmount.tmp REM ------------ DO NOT EDIT BEYOND THIS LINE ---------------- IF "%1"=="ATTACH" GOTO ATTACH_STORAGE IF "%1"=="DETACH" GOTO DETACH_STORAGE REM No parameters echo Usage USBMOUNT.BAT ^ GOTO END :DETACH_STORAGE %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids --minimal > %TEMP_FILE% SET /P VBD_UUIDS= < %TEMP_FILE% IF "%VBD_UUIDS%"=="" GOTO NOT_BOUND %XE_EXEC% vbd-unplug uuid=%VBD_UUIDS% %XE_EXEC% vbd-destroy uuid=%VBD_UUIDS% echo.Storage Detached GOTO END :ATTACH_STORAGE REM See if the storage is already bound to a VBD %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=vbd-uuids --minimal > %TEMP_FILE% SET /P VBD_UUIDS= < %TEMP_FILE% IF NOT "%VBD_UUIDS%"=="" GOTO ALREADY_BOUND %XE_EXEC% vdi-list sr-uuid=%REMOVABLE_SR_UUID% params=uuid --minimal > %TEMP_FILE% SET /P VDI_UUID= < %TEMP_FILE% %XE_EXEC% vbd-create vm-uuid=%VM_UUID% device=%DEVICE_NAME% vdi-uuid=%VDI_UUID% --minimal > %TEMP_FILE% SET /P VBD_UUID= < %TEMP_FILE% %XE_EXEC% vbd-plug uuid=%VBD_UUID% echo.VBD UUID attached as: %VBD_UUID% GOTO END :ALREADY_BOUND echo.Removable storage already attached to a VM - aborting. GOTO END :NOT_BOUND echo.Storage device not bound to any VMs - aborting. GOTO END :END endlocal